/**
 * 菜单js
 */

$(function(){
		var menus=getMenu();
		
		$.ajax({  
            async:false,  //异步或是同步，默认为异步  
            url:"/auth/read-menu-root.action",   
            type:"post",  
            dataType:"json",  
            success:function(data){  
             var result=data.result
             for(i=0;i<result.length;i++)
             { 
            	 var etool_menu_id="etool_menu_"+result[i].id;
            	 $('#etool_accordion').accordion('add',{  
                     title:result[i].name,
                     content:'<ul id="'+etool_menu_id+'" class="easyui-tree" style="padding:10px;"></ul>' ,
                 }); 

                 var cmenu=findChildrenMenu(menus,result[i].id)
                 
                 if(cmenu.length!=0)
                 {
                	 $("#"+etool_menu_id).tree({
                   		 data:cmenu,
                   		 loadFilter: function(rows){  
                		        return convert(cmenu);  
                		 },
                		 onClick:function(node)
                		 {
                			 etool_menu_tab(node);
                		 }
                   	 })
                 }
             }
            }  
        });
		
	})
	
	function etool_menu_tab(node)
	{
		var url=node.attributes.url;
		var title=node.text;
		
		if(url=="" || url == undefined)
			{
			return;
			}
		
		var iframe=node.attributes.iframe;
		
		if ($('#etool_tab').tabs('exists', title)){
			$('#etool_tab').tabs('select', title);
		} else {
			
			if(iframe==1)
			{
				var content = '<iframe scrolling="auto" frameborder="0"  src="'+url+'" style="width:100%;height:100%;margin:2px 0px 0px 2px"></iframe>';  
				$('#etool_tab').tabs('add',{  
			            title:title,  
			            content:content,  
			            closable:true  
			    });  
			}
			else
			{
				 $('#etool_tab').tabs('add',{  
	                  title:title,  
	                  href:url, 
	                  closable:true,
	                  extractor:function(data){
	  					return data;
	  					}
	              }); 
			}
			 
			
			 	
		}	
	}
	
	
	//获取改用户的所有菜单
	function getMenu()
	{
		var res=null;
		$.ajax({  
            async:false,  //异步或是同步，默认为异步  
            url:"/auth/read-menu.action",   
            type:"post",  
            dataType:"json",  
            success:function(data){  
            	res=data.result
            }  
        });
		return res;
	}
	
	function findChildrenMenu(menus,parentId)
	{
		var childrenMenu=new Array();
		for(j=0;j<menus.length;j++)
			{
				var tmp=new String(menus[j].id).substr(0,2);
				if(tmp==parentId && menus[j].id!=parentId)
				{
					childrenMenu.push(menus[j])
				}
			}
		return childrenMenu;
	}
	
	
	function convert(rows){  
    function exists(rows, parentId){  
        for(var i=0; i<rows.length; i++){  
            if (rows[i].id == parentId) return true;  
        }  
        return false;  
    }  
    var nodes = [];  
    // get the top level nodes  
    for(var i=0; i<rows.length; i++){  
        var row = rows[i];  
        if (!exists(rows, row._parentId)){  
            nodes.push({  
                id:row.id,  
                text:row.name,
                attributes:{"url":row.url,"iframe":row.iframe}
            });  
        }  
    }  
      
    var toDo = [];  
    for(var i=0; i<nodes.length; i++){  
        toDo.push(nodes[i]);  
    }  
    while(toDo.length){  
        var node = toDo.shift();    // the parent node  
        // get the children nodes  
        for(var i=0; i<rows.length; i++){  
            var row = rows[i];  
            if (row._parentId == node.id){  
                var child = {id:row.id,text:row.name,attributes:{"url":row.url,"iframe":row.iframe}};  
                if (node.children){  
                    node.children.push(child);  
                } else {  
                    node.children = [child];  
                }  
                toDo.push(child);  
            }  
        }  
    }  
    return nodes;  
}  